package fun.cyhgraph.service;

import fun.cyhgraph.dto.SetmealDTO;
import fun.cyhgraph.dto.SetmealPageDTO;
import fun.cyhgraph.entity.Setmeal;
import fun.cyhgraph.result.PageResult;
import fun.cyhgraph.vo.DishItemVO;
import fun.cyhgraph.vo.SetmealVO;
import fun.cyhgraph.vo.SetmealWithPicVO;

import java.util.List;

/**
 * 套餐服务
 */
public interface SetmealService {

    /**
     * 新增套餐   (管理端)
     * @param setmealDTO
     */
    void addSetmeal(SetmealDTO setmealDTO);

    /**
     * 套餐条件分页查询    (管理端)
     * @param setmealPageDTO
     * @return
     */
    PageResult getPageList(SetmealPageDTO setmealPageDTO);


    /**
     * 批量删除套餐    (管理端)
     * @param ids
     */
    void deleteBatch(List<Integer> ids);


    /**
     * 根据id查询套餐   （管理端-修改页面回显数据）
     * @param id
     * @return
     */
    SetmealVO getSetmealById(Integer id);

    /**
     * 修改套餐    (管理端)
     * @param setmealDTO
     */
    void update(SetmealDTO setmealDTO);


    /**
     * 根据id起售停售套餐    (管理端)
     * @param id
     */
    void onOff(Integer id);


    //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


    /**
     * 根据分类id查询所有套餐  (用户端)
     * @param categoryId
     * @return
     */
    List<Setmeal> getList(Integer categoryId);

    /**
     * 根据套餐id查询套餐和图片  (用户端)
     * @param id
     * @return
     */
    SetmealWithPicVO getSetmealWithPic(Integer id);

    /**
     * 根据套餐id查询套餐中的菜品  (用户端)
     * @param id
     * @return
     */
    List<DishItemVO> getSetmealDishesById(Integer id);


}
